home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
comm2
/
mmmntc20.lha
/
MM
/
Rexx
/
MM_MaintCfg.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-04-26
|
7KB
|
401 lines
/*
$VER: MM_MaintCfg.rexx 0.20 (26.04.96)
(C) 1995/96 Robert Hofmann
*/
parse arg args
options cache
options failat 99
options results
signal on break_c
signal on break_d
signal on break_e
signal on break_f
signal on halt
signal on ioerr
signal on syntax
address 'MAILMANAGER'
Main:
call Init
call Header
call Parse_Args(args)
call Maint_Cfgs
call Quit(0, 'All done.')
exit
break_c:; break_d:; break_e:; break_f:; halt:
signal off break_c
signal off break_d
signal off break_e
signal off break_f
signal off halt
return_code = 5
error_line = 0
error_msg = 'Execution halted!!!'
rc = 0
signal Exit
Command: procedure Expose system.
parse arg cmd
address command cmd
if rc>5 then call Log('*** WARNING: Command "'cmd'" returned' rc'.')
return rc
Exit:
select
when return_code>=40 then error = 'INTERNAL-ERROR:'
when return_code>=30 then error = 'IO-ERROR:'
when return_code>=20 then error = 'ERROR:'
when return_code>=10 then error = 'WARNING:'
when return_code>=5 then error = 'INFO:'
otherwise error = ''
end
call Log()
call Log('***' strip(error error_msg) '***', '+')
call Log(,'\')
call setclip('MM_LogPre', system.mm.logpre)
exit return_code
Get_Arg: procedure Expose args system.
arg keyword, mode, old
uargs = upper(args)
p = find(uargs, keyword)
if p=0 then
do
p = pos(' 'keyword'=', ' 'uargs)
if p>0 then args = overlay(' ', args, p+length(keyword))
p = find(upper(args), keyword)
end
system.cmdopt.keyword = p>0
select
when mode=0 then
if p>0 then
do
ret = 1
args = delword(args, p, 1)
end
else ret = old
when mode=1 then
if p>0 then
do
left = subword(args, 1, p-1)
rest = subword(args, p+1)
if left(rest, 1)='"' then parse var rest . '"' ret '"' rest
else parse var rest ret rest
args = strip(left strip(rest))
end
else ret = old
when mode=2 then
do
if left(args, 1)='"' then parse var args . '"' ret '"' args
else parse var args ret args
if strip(ret)='' then ret = old
end
otherwise exit 99
end
args = strip(args)
ret = strip(ret, 'b', '" ')
return ret
Get_Version: procedure
parse arg mode
parse value sourceline(3-mode) with . . ver .
parse var ver tst 'ß' .
if ~datatype(strip(tst, 'b', '/ce '), 'N') then
if ~mode then ver = Get_Version(1)
else exit 99
return ver
Header:
call Log(,'/')
call Log('***' system.prg.id '***', '+')
call Log(' 'system.prg.cr)
call Log()
return
Include_Lib: procedure
parse arg lib, prio
if right(upper(lib), 8)~='.LIBRARY' then lib=lib'.library'
if prio='' then prio=0
if ~show('l', lib) then
if ~addlib(lib, prio, -30, 0) then
do
say '*** ERROR: Could not open' lib'!!! ***'
exit 10
end
return
Init:
system. = 0
MM_GetTaskPri 'system.taskpri'
call pragma('p', system.taskpri)
system.prg.name = 'MM_MaintCfg'
system.prg.ver = Get_Version(0)
system.prg.id = system.prg.name 'v'system.prg.ver
system.prg.cr = '(C) 1995/96 Robert Hofmann'
system.tmpfile = 'T:'system.prg.name'.tmp'
system.mm.logpre = getclip('MM_LogPre')
system.prg.logpre = system.mm.logpre'|'
call setclip('MM_LogPre', system.prg.logpre)
system.cmdopts = 'CFG/K,MAXBACKUP/K/N'
MM_GetCfgPaths 'system.mm'
MM_Version 'system.mm'
call Include_Lib('rexxsupport')
return
IOerr:
signal off ioerr
return_code = 20
error_line = sigl
error_msg = 'IO-error' rc 'at line' sigl '['errortext(rc)']')
rc = 0
signal Exit
Log: procedure Expose system.
parse arg text, pre
tmp = word('PRG MM', (pre~='')+1)
text = system.tmp.logpre || pre' 'text
MM_WriteLog 'text' '2'
return
Maint_Cfgs: procedure Expose system.
if ~exists(system.arg.cfg) then
do
call Log('*** ERROR: Unable to locate' system.arg.cfg'!!!')
return
end
config = system.arg.cfg
call Log(' CFG =' config', MAXBACKUP =' system.arg.maxbackup)
call Command('c:list >'system.tmpfile config',#? lformat "%p%n"')
MM_ReadStem system.tmpfile 'tmp'
call delete(system.tmpfile)
tmp2. = 0
do n=0 to tmp.count-1
parse var tmp.n . ',' nr
tmp2.nr = config','nr
tmp2.count = max(tmp2.count, nr)
end
backup. = 0
cnt = 0
do n=1 to tmp2.count
if tmp2.n=0 then iterate
backup.cnt = tmp2.n
cnt = cnt+1
end
backup.count = cnt
maxnr = cnt-1
drop tmp. tmp2.
call Log(' Found' backup.count 'backup-configs')
if backup.count>system.arg.maxbackup then
do
do n=1 to system.arg.maxbackup
new = config','n
nr = maxnr-system.arg.maxbackup+n
old = backup.nr
call Log(' Moving' old '->' new'...')
call delete(new)
call rename(old, new)
end
do n=system.arg.maxbackup+1 to maxnr-system.arg.maxbackup+1
call Log(' Deleting' system.arg.cfg','n'...')
call delete(system.arg.cfg','n)
end
end
else call Log(' Nothing to do...')
return
Parse_Args: procedure Expose system.
parse arg args
tpl = system.cmdopts',?/S,'
args = translate(args, ' ', '9'x'=')
pk = pos('/K', tpl)
ps = pos('/S', tpl)
select
when pk=0 & ps=0 then p = 0
when pk=0 & ps>0 then p = ps
when ps=0 & pk>0 then p = pk
otherwise p = min(pk, ps)
end
p = lastpos(',', left(tpl, p))
tpl = substr(tpl',', p+1) || left(tpl, max(p-1, 0))
do while tpl~=''
parse var tpl template ',' tpl
parse var template keyword '/' .
bool = pos('/S', template)>0
key = pos('/K', template)>0
must = pos('/A', template)>0
num = pos('/N', template)>0
select
when must then system.arg.keyword = '0'x
when bool then system.arg.keyword = 0
when num then system.arg.keyword = 0
otherwise system.arg.keyword = ''
end
if bool | key then mode = ~bool
else mode = 2
system.arg.keyword = Get_Arg(keyword, mode, system.arg.keyword)
if keyword='?' & system.arg.keyword=1 then leave
if must & system.arg.keyword='0'x then
do
tmp = template 'missing!!!'
say
say ' ***' tmp '***'
signal Usage
end
if num & ~datatype(system.arg.keyword, 'N') then
if ~must & system.arg.keyword='' then system.arg.keyword = 0
else
do
tmp = 'Numeric value expected for' template', but is "'system.arg.keyword'"!!!'
say
say ' ***' tmp '***'
signal Usage
end
end
tmp = '?'; if system.arg.tmp then signal Usage
if args~='' then call Quit(10, 'Unknown option(s):' args)
if system.arg.cfg='' then
if system.mm.release<429 then system.arg.cfg = 'MM:Config/MailManager.cfg'
else system.arg.cfg = system.mm.cfgfile
if system.arg.maxbackup<=0 then system.arg.maxbackup = 5
return
Quit:
parse arg return_code, error_msg
error_line = 0
rc = 0
signal Exit
Syntax:
signal off syntax
return_code = 40
error_line = sigl
error_msg = 'Syntax-error' rc 'at line' sigl '['errortext(rc)']'
rc = 0
signal Exit
Usage:
rx. = ''
rx.0.0 = '[rx] '
rx.0.1 = '[.rexx]'
m = pos('/e', system.prg.ver)>0
tmp = rx.m.0 || system.prg.name || rx.m.1
say
say 'Usage:' tmp system.cmdopts
say
call Quit(0, 'Usage requested.')